<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/timer.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/timer.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1RJTUVSX0hfMA__"><span class="b">_LINUX_TIMER_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1RJTUVSX0hfMA__"><span class="b">_LINUX_TIMER_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">list</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">ktime</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="Maybe">       6:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">stddef</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">debugobjects</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">stringify</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="9" /><span class="Maybe">       9:</span> 
<a name="10" /><span class="Maybe">      10:</span> <span class="m">struct</span> <span class="b">tvec_base</span><span class="f">;</span>
<a name="11" /><span class="Maybe">      11:</span> 
<a name="12" /><span class="Maybe">      12:</span> <span class="m">struct</span> <span class="b">timer_list</span> <span class="f">{</span>
<a name="13" /><span class="Maybe">      13:</span>     <span class="k">/*</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="k">     * All fields that change during normal runtime grouped to the</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="k">     * same cacheline</span>
<a name="16" /><span class="Maybe">      16:</span> <span class="k">     */</span>
<a name="17" /><span class="Maybe">      17:</span>     <span class="m">struct</span> <span class="b">list_head</span> <span class="b">entry</span><span class="f">;</span>
<a name="18" /><span class="Maybe">      18:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">expires</span><span class="f">;</span>
<a name="19" /><span class="Maybe">      19:</span>     <span class="m">struct</span> <span class="b">tvec_base</span> <span class="f">*</span><span class="b">base</span><span class="f">;</span>
<a name="20" /><span class="Maybe">      20:</span> 
<a name="21" /><span class="Maybe">      21:</span>     <span class="m">void</span> <span class="f">(</span><span class="f">*</span><span class="b">function</span><span class="f">)</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">;</span>
<a name="22" /><span class="Maybe">      22:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">data</span><span class="f">;</span>
<a name="23" /><span class="Maybe">      23:</span> 
<a name="24" /><span class="Maybe">      24:</span>     <span class="m">int</span> <span class="b">slack</span><span class="f">;</span>
<a name="25" /><span class="Maybe">      25:</span> 
<a name="26" /><span class="Maybe">      26:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1RJTUVSX1NUQVRTXzA_"><span class="b">CONFIG_TIMER_STATS</span></a>
<a name="27" /><span class="Maybe">      27:</span>     <span class="m">int</span> <span class="b">start_pid</span><span class="f">;</span>
<a name="28" /><span class="Maybe">      28:</span>     <span class="m">void</span> <span class="f">*</span><span class="b">start_site</span><span class="f">;</span>
<a name="29" /><span class="Maybe">      29:</span>     <span class="m">char</span> <span class="b">start_comm</span><span class="f">[</span><span class="c">16</span><span class="f">]</span><span class="f">;</span>
<a name="30" /><span class="Maybe">      30:</span> <span class="f">#</span><span class="n">endif</span>
<a name="31" /><span class="False">      31:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_LOCKDEP</span>
<a name="32" /><span class="False">      32:</span>     <span class="m">struct</span> <span class="b">lockdep_map</span> <span class="b">lockdep_map</span><span class="f">;</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="f">#</span><span class="n">endif</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="f">}</span><span class="f">;</span>
<a name="35" /><span class="Maybe">      35:</span> 
<a name="36" /><span class="Maybe">      36:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">tvec_base</span> <span class="b">boot_tvec_bases</span><span class="f">;</span>
<a name="37" /><span class="Maybe">      37:</span> 
<a name="38" /><span class="False">      38:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_LOCKDEP</span>
<a name="39" /><span class="False">      39:</span> <span class="k">/*</span>
<a name="40" /><span class="False">      40:</span> <span class="k"> * NB: because we have to copy the lockdep_map, setting the lockdep_map key</span>
<a name="41" /><span class="False">      41:</span> <span class="k"> * (second argument) here is required, otherwise it could be initialised to</span>
<a name="42" /><span class="False">      42:</span> <span class="k"> * the copy of the lockdep_map later! We use the pointer to and the string</span>
<a name="43" /><span class="False">      43:</span> <span class="k"> * &quot;&lt;file&gt;:&lt;line&gt;&quot; as the key resp. the name of the lockdep_map.</span>
<a name="44" /><span class="False">      44:</span> <span class="k"> */</span>
<a name="45" /><span class="False">      45:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19USU1FUl9MT0NLREVQX01BUF9JTklUSUFMSVpFUl8w"><span class="b">__TIMER_LOCKDEP_MAP_INITIALIZER</span></a><span class="f">(</span><span class="b">_kn</span><span class="f">)</span>                \
<a name="46" /><span class="False">      46:</span>     <span class="f">.</span><span class="b">lockdep_map</span> <span class="f">=</span> <span class="b">STATIC_LOCKDEP_MAP_INIT</span><span class="f">(</span><span class="b">_kn</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">_kn</span><span class="f">)</span><span class="f">,</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="f">#</span><span class="n">else</span>
<a name="48" /><span class="Maybe">      48:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19USU1FUl9MT0NLREVQX01BUF9JTklUSUFMSVpFUl8w"><span class="b">__TIMER_LOCKDEP_MAP_INITIALIZER</span></a><span class="f">(</span><span class="b">_kn</span><span class="f">)</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="f">#</span><span class="n">endif</span>
<a name="50" /><span class="Maybe">      50:</span> 
<a name="51" /><span class="Maybe">      51:</span> <span class="k">/*</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="k"> * Note that all tvec_bases are at least 4 byte aligned and lower two bits</span>
<a name="53" /><span class="Maybe">      53:</span> <span class="k"> * of base in timer_list is guaranteed to be zero. Use them for flags.</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="k"> *</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="k"> * A deferrable timer will work normally when the system is busy, but</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="k"> * will not cause a CPU to come out of idle just to service it; instead,</span>
<a name="57" /><span class="Maybe">      57:</span> <span class="k"> * the timer will be serviced when the CPU eventually wakes up with a</span>
<a name="58" /><span class="Maybe">      58:</span> <span class="k"> * subsequent non-deferrable timer.</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="k"> *</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="k"> * An irqsafe timer is executed with IRQ disabled and it&apos;s safe to wait for</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="k"> * the completion of the running instance from IRQ handlers, for example,</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="k"> * by calling del_timer_sync().</span>
<a name="63" /><span class="Maybe">      63:</span> <span class="k"> *</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="k"> * Note: The irq disabled callback execution is a special case for</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="k"> * workqueue locking issues. It&apos;s not meant for executing random crap</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="k"> * with interrupts disabled. Abuse is monitored!</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="k"> */</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VElNRVJfREVGRVJSQUJMRV8w"><span class="b">TIMER_DEFERRABLE</span></a>        <span class="c">0x1LU</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VElNRVJfSVJRU0FGRV8w"><span class="b">TIMER_IRQSAFE</span></a>            <span class="c">0x2LU</span>
<a name="70" /><span class="Maybe">      70:</span> 
<a name="71" /><span class="Maybe">      71:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VElNRVJfRkxBR19NQVNLXzA_"><span class="b">TIMER_FLAG_MASK</span></a>            <span class="c">0x3LU</span>
<a name="72" /><span class="Maybe">      72:</span> 
<a name="73" /><span class="Maybe">      73:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19USU1FUl9JTklUSUFMSVpFUl8w"><span class="b">__TIMER_INITIALIZER</span></a><span class="f">(</span><span class="b">_function</span><span class="f">,</span> <span class="b">_expires</span><span class="f">,</span> <span class="b">_data</span><span class="f">,</span> <span class="b">_flags</span><span class="f">)</span> <span class="f">{</span> \
<a name="74" /><span class="Maybe">      74:</span>         <span class="f">.</span><span class="b">entry</span> <span class="f">=</span> <span class="f">{</span> <span class="f">.</span><span class="b">prev</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_VElNRVJfRU5UUllfU1RBVElDXzA_"><span class="b">TIMER_ENTRY_STATIC</span></a> <span class="f">}</span><span class="f">,</span>    \
<a name="75" /><span class="Maybe">      75:</span>         <span class="f">.</span><span class="b">function</span> <span class="f">=</span> <span class="f">(</span><span class="b">_function</span><span class="f">)</span><span class="f">,</span>            \
<a name="76" /><span class="Maybe">      76:</span>         <span class="f">.</span><span class="b">expires</span> <span class="f">=</span> <span class="f">(</span><span class="b">_expires</span><span class="f">)</span><span class="f">,</span>                \
<a name="77" /><span class="Maybe">      77:</span>         <span class="f">.</span><span class="b">data</span> <span class="f">=</span> <span class="f">(</span><span class="b">_data</span><span class="f">)</span><span class="f">,</span>                \
<a name="78" /><span class="Maybe">      78:</span>         <span class="f">.</span><span class="b">base</span> <span class="f">=</span> <span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="f">)</span><span class="f">(</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">&amp;</span><span class="b">boot_tvec_bases</span> <span class="f">+</span> <span class="f">(</span><span class="b">_flags</span><span class="f">)</span><span class="f">)</span><span class="f">,</span> \
<a name="79" /><span class="Maybe">      79:</span>         <span class="f">.</span><span class="b">slack</span> <span class="f">=</span> <span class="f">-</span><span class="c">1</span><span class="f">,</span>                    \
<a name="80" /><span class="Maybe">      80:</span>         <a href="cpu.c_macros_noref.html#_X19USU1FUl9MT0NLREVQX01BUF9JTklUSUFMSVpFUl8w"><span class="b">__TIMER_LOCKDEP_MAP_INITIALIZER</span></a><span class="f">(</span>        \
<a name="81" /><span class="Maybe">      81:</span>             <span class="b">__FILE__</span> <span class="e">&quot;:&quot;</span> <a href="cpu.c_macros_ref.html#_X19zdHJpbmdpZnlfMA__"><span class="b">__stringify</span></a><span class="f">(</span><span class="b">__LINE__</span><span class="f">)</span><span class="f">)</span>    \
<a name="82" /><span class="Maybe">      82:</span>     <span class="f">}</span>
<a name="83" /><span class="Maybe">      83:</span> 
<a name="84" /><span class="Maybe">      84:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VElNRVJfSU5JVElBTElaRVJfMA__"><span class="b">TIMER_INITIALIZER</span></a><span class="f">(</span><span class="b">_function</span><span class="f">,</span> <span class="b">_expires</span><span class="f">,</span> <span class="b">_data</span><span class="f">)</span>        \
<a name="85" /><span class="Maybe">      85:</span>     <a href="cpu.c_macros_noref.html#_X19USU1FUl9JTklUSUFMSVpFUl8w"><span class="b">__TIMER_INITIALIZER</span></a><span class="f">(</span><span class="f">(</span><span class="b">_function</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">_expires</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">_data</span><span class="f">)</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="86" /><span class="Maybe">      86:</span> 
<a name="87" /><span class="Maybe">      87:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VElNRVJfREVGRVJSRURfSU5JVElBTElaRVJfMA__"><span class="b">TIMER_DEFERRED_INITIALIZER</span></a><span class="f">(</span><span class="b">_function</span><span class="f">,</span> <span class="b">_expires</span><span class="f">,</span> <span class="b">_data</span><span class="f">)</span>    \
<a name="88" /><span class="Maybe">      88:</span>     <a href="cpu.c_macros_noref.html#_X19USU1FUl9JTklUSUFMSVpFUl8w"><span class="b">__TIMER_INITIALIZER</span></a><span class="f">(</span><span class="f">(</span><span class="b">_function</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">_expires</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">_data</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_noref.html#_VElNRVJfREVGRVJSQUJMRV8w"><span class="b">TIMER_DEFERRABLE</span></a><span class="f">)</span>
<a name="89" /><span class="Maybe">      89:</span> 
<a name="90" /><span class="Maybe">      90:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_REVGSU5FX1RJTUVSXzA_"><span class="b">DEFINE_TIMER</span></a><span class="f">(</span><span class="b">_name</span><span class="f">,</span> <span class="b">_function</span><span class="f">,</span> <span class="b">_expires</span><span class="f">,</span> <span class="b">_data</span><span class="f">)</span>        \
<a name="91" /><span class="Maybe">      91:</span>     <span class="m">struct</span> <span class="b">timer_list</span> <span class="b">_name</span> <span class="f">=</span>                \
<a name="92" /><span class="Maybe">      92:</span>         <a href="cpu.c_macros_noref.html#_VElNRVJfSU5JVElBTElaRVJfMA__"><span class="b">TIMER_INITIALIZER</span></a><span class="f">(</span><span class="b">_function</span><span class="f">,</span> <span class="b">_expires</span><span class="f">,</span> <span class="b">_data</span><span class="f">)</span>
<a name="93" /><span class="Maybe">      93:</span> 
<a name="94" /><span class="Maybe">      94:</span> <span class="m">void</span> <span class="b">init_timer_key</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">flags</span><span class="f">,</span>
<a name="95" /><span class="Maybe">      95:</span>             <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">name</span><span class="f">,</span> <span class="m">struct</span> <span class="b">lock_class_key</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="96" /><span class="Maybe">      96:</span> 
<a name="97" /><span class="False">      97:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_OBJECTS_TIMERS</span>
<a name="98" /><span class="False">      98:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">init_timer_on_stack_key</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span>
<a name="99" /><span class="False">      99:</span>                     <span class="m">unsigned</span> <span class="m">int</span> <span class="b">flags</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">name</span><span class="f">,</span>
<a name="100" /><span class="False">     100:</span>                     <span class="m">struct</span> <span class="b">lock_class_key</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="101" /><span class="False">     101:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">destroy_timer_on_stack</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="102" /><span class="Maybe">     102:</span> <span class="f">#</span><span class="n">else</span>
<a name="103" /><span class="Maybe">     103:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">destroy_timer_on_stack</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="104" /><span class="Maybe">     104:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">init_timer_on_stack_key</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span>
<a name="105" /><span class="Maybe">     105:</span>                        <span class="m">unsigned</span> <span class="m">int</span> <span class="b">flags</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">name</span><span class="f">,</span>
<a name="106" /><span class="Maybe">     106:</span>                        <span class="m">struct</span> <span class="b">lock_class_key</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span>
<a name="107" /><span class="Maybe">     107:</span> <span class="f">{</span>
<a name="108" /><span class="Maybe">     108:</span>     <span class="b">init_timer_key</span><span class="f">(</span><span class="b">timer</span><span class="f">,</span> <span class="b">flags</span><span class="f">,</span> <span class="b">name</span><span class="f">,</span> <span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="109" /><span class="Maybe">     109:</span> <span class="f">}</span>
<a name="110" /><span class="Maybe">     110:</span> <span class="f">#</span><span class="n">endif</span>
<a name="111" /><span class="Maybe">     111:</span> 
<a name="112" /><span class="False">     112:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_LOCKDEP</span>
<a name="113" /><span class="False">     113:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19pbml0X3RpbWVyXzA_"><span class="b">__init_timer</span></a><span class="f">(</span><span class="b">_timer</span><span class="f">,</span> <span class="b">_flags</span><span class="f">)</span>                    \
<a name="114" /><span class="False">     114:</span>     <span class="m">do</span> <span class="f">{</span>                                \
<a name="115" /><span class="False">     115:</span>         <span class="m">static</span> <span class="m">struct</span> <span class="b">lock_class_key</span> <span class="b">__key</span><span class="f">;</span>            \
<a name="116" /><span class="False">     116:</span>         <span class="b">init_timer_key</span><span class="f">(</span><span class="f">(</span><span class="b">_timer</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">_flags</span><span class="f">)</span><span class="f">,</span> <span class="f">#</span><span class="b">_timer</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">__key</span><span class="f">)</span><span class="f">;</span>    \
<a name="117" /><span class="False">     117:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="118" /><span class="False">     118:</span> 
<a name="119" /><span class="False">     119:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19pbml0X3RpbWVyX29uX3N0YWNrXzA_"><span class="b">__init_timer_on_stack</span></a><span class="f">(</span><span class="b">_timer</span><span class="f">,</span> <span class="b">_flags</span><span class="f">)</span>                \
<a name="120" /><span class="False">     120:</span>     <span class="m">do</span> <span class="f">{</span>                                \
<a name="121" /><span class="False">     121:</span>         <span class="m">static</span> <span class="m">struct</span> <span class="b">lock_class_key</span> <span class="b">__key</span><span class="f">;</span>            \
<a name="122" /><span class="False">     122:</span>         <span class="b">init_timer_on_stack_key</span><span class="f">(</span><span class="f">(</span><span class="b">_timer</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">_flags</span><span class="f">)</span><span class="f">,</span> <span class="f">#</span><span class="b">_timer</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">__key</span><span class="f">)</span><span class="f">;</span> \
<a name="123" /><span class="False">     123:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="124" /><span class="Maybe">     124:</span> <span class="f">#</span><span class="n">else</span>
<a name="125" /><span class="Maybe">     125:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19pbml0X3RpbWVyXzA_"><span class="b">__init_timer</span></a><span class="f">(</span><span class="b">_timer</span><span class="f">,</span> <span class="b">_flags</span><span class="f">)</span>                    \
<a name="126" /><span class="Maybe">     126:</span>     <span class="b">init_timer_key</span><span class="f">(</span><span class="f">(</span><span class="b">_timer</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">_flags</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">)</span>
<a name="127" /><span class="Maybe">     127:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19pbml0X3RpbWVyX29uX3N0YWNrXzA_"><span class="b">__init_timer_on_stack</span></a><span class="f">(</span><span class="b">_timer</span><span class="f">,</span> <span class="b">_flags</span><span class="f">)</span>                \
<a name="128" /><span class="Maybe">     128:</span>     <span class="b">init_timer_on_stack_key</span><span class="f">(</span><span class="f">(</span><span class="b">_timer</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">_flags</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">)</span>
<a name="129" /><span class="Maybe">     129:</span> <span class="f">#</span><span class="n">endif</span>
<a name="130" /><span class="Maybe">     130:</span> 
<a name="131" /><span class="Maybe">     131:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aW5pdF90aW1lcl8w"><span class="b">init_timer</span></a><span class="f">(</span><span class="b">timer</span><span class="f">)</span>                        \
<a name="132" /><span class="Maybe">     132:</span>     <a href="cpu.c_macros_noref.html#_X19pbml0X3RpbWVyXzA_"><span class="b">__init_timer</span></a><span class="f">(</span><span class="f">(</span><span class="b">timer</span><span class="f">)</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="133" /><span class="Maybe">     133:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aW5pdF90aW1lcl9kZWZlcnJhYmxlXzA_"><span class="b">init_timer_deferrable</span></a><span class="f">(</span><span class="b">timer</span><span class="f">)</span>                    \
<a name="134" /><span class="Maybe">     134:</span>     <a href="cpu.c_macros_noref.html#_X19pbml0X3RpbWVyXzA_"><span class="b">__init_timer</span></a><span class="f">(</span><span class="f">(</span><span class="b">timer</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_noref.html#_VElNRVJfREVGRVJSQUJMRV8w"><span class="b">TIMER_DEFERRABLE</span></a><span class="f">)</span>
<a name="135" /><span class="Maybe">     135:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_aW5pdF90aW1lcl9vbl9zdGFja18w"><span class="b">init_timer_on_stack</span></a><span class="f">(</span><span class="b">timer</span><span class="f">)</span>                    \
<a name="136" /><span class="Maybe">     136:</span>     <a href="cpu.c_macros_noref.html#_X19pbml0X3RpbWVyX29uX3N0YWNrXzA_"><span class="b">__init_timer_on_stack</span></a><span class="f">(</span><span class="f">(</span><span class="b">timer</span><span class="f">)</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="137" /><span class="Maybe">     137:</span> 
<a name="138" /><span class="Maybe">     138:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19zZXR1cF90aW1lcl8w"><span class="b">__setup_timer</span></a><span class="f">(</span><span class="b">_timer</span><span class="f">,</span> <span class="b">_fn</span><span class="f">,</span> <span class="b">_data</span><span class="f">,</span> <span class="b">_flags</span><span class="f">)</span>            \
<a name="139" /><span class="Maybe">     139:</span>     <span class="m">do</span> <span class="f">{</span>                                \
<a name="140" /><span class="Maybe">     140:</span>         <a href="cpu.c_macros_noref.html#_X19pbml0X3RpbWVyXzA_"><span class="b">__init_timer</span></a><span class="f">(</span><span class="f">(</span><span class="b">_timer</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">_flags</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>            \
<a name="141" /><span class="Maybe">     141:</span>         <span class="f">(</span><span class="b">_timer</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">function</span> <span class="f">=</span> <span class="f">(</span><span class="b">_fn</span><span class="f">)</span><span class="f">;</span>                \
<a name="142" /><span class="Maybe">     142:</span>         <span class="f">(</span><span class="b">_timer</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">data</span> <span class="f">=</span> <span class="f">(</span><span class="b">_data</span><span class="f">)</span><span class="f">;</span>                \
<a name="143" /><span class="Maybe">     143:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="144" /><span class="Maybe">     144:</span> 
<a name="145" /><span class="Maybe">     145:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19zZXR1cF90aW1lcl9vbl9zdGFja18w"><span class="b">__setup_timer_on_stack</span></a><span class="f">(</span><span class="b">_timer</span><span class="f">,</span> <span class="b">_fn</span><span class="f">,</span> <span class="b">_data</span><span class="f">,</span> <span class="b">_flags</span><span class="f">)</span>        \
<a name="146" /><span class="Maybe">     146:</span>     <span class="m">do</span> <span class="f">{</span>                                \
<a name="147" /><span class="Maybe">     147:</span>         <a href="cpu.c_macros_noref.html#_X19pbml0X3RpbWVyX29uX3N0YWNrXzA_"><span class="b">__init_timer_on_stack</span></a><span class="f">(</span><span class="f">(</span><span class="b">_timer</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">_flags</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>        \
<a name="148" /><span class="Maybe">     148:</span>         <span class="f">(</span><span class="b">_timer</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">function</span> <span class="f">=</span> <span class="f">(</span><span class="b">_fn</span><span class="f">)</span><span class="f">;</span>                \
<a name="149" /><span class="Maybe">     149:</span>         <span class="f">(</span><span class="b">_timer</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">data</span> <span class="f">=</span> <span class="f">(</span><span class="b">_data</span><span class="f">)</span><span class="f">;</span>                \
<a name="150" /><span class="Maybe">     150:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="151" /><span class="Maybe">     151:</span> 
<a name="152" /><span class="Maybe">     152:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c2V0dXBfdGltZXJfMA__"><span class="b">setup_timer</span></a><span class="f">(</span><span class="b">timer</span><span class="f">,</span> <span class="b">fn</span><span class="f">,</span> <span class="b">data</span><span class="f">)</span>                    \
<a name="153" /><span class="Maybe">     153:</span>     <a href="cpu.c_macros_noref.html#_X19zZXR1cF90aW1lcl8w"><span class="b">__setup_timer</span></a><span class="f">(</span><span class="f">(</span><span class="b">timer</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">fn</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">data</span><span class="f">)</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="154" /><span class="Maybe">     154:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c2V0dXBfdGltZXJfb25fc3RhY2tfMA__"><span class="b">setup_timer_on_stack</span></a><span class="f">(</span><span class="b">timer</span><span class="f">,</span> <span class="b">fn</span><span class="f">,</span> <span class="b">data</span><span class="f">)</span>                \
<a name="155" /><span class="Maybe">     155:</span>     <a href="cpu.c_macros_noref.html#_X19zZXR1cF90aW1lcl9vbl9zdGFja18w"><span class="b">__setup_timer_on_stack</span></a><span class="f">(</span><span class="f">(</span><span class="b">timer</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">fn</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">data</span><span class="f">)</span><span class="f">,</span> <span class="c">0</span><span class="f">)</span>
<a name="156" /><span class="Maybe">     156:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_c2V0dXBfZGVmZXJyYWJsZV90aW1lcl9vbl9zdGFja18w"><span class="b">setup_deferrable_timer_on_stack</span></a><span class="f">(</span><span class="b">timer</span><span class="f">,</span> <span class="b">fn</span><span class="f">,</span> <span class="b">data</span><span class="f">)</span>        \
<a name="157" /><span class="Maybe">     157:</span>     <a href="cpu.c_macros_noref.html#_X19zZXR1cF90aW1lcl9vbl9zdGFja18w"><span class="b">__setup_timer_on_stack</span></a><span class="f">(</span><span class="f">(</span><span class="b">timer</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">fn</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">data</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_noref.html#_VElNRVJfREVGRVJSQUJMRV8w"><span class="b">TIMER_DEFERRABLE</span></a><span class="f">)</span>
<a name="158" /><span class="Maybe">     158:</span> 
<a name="159" /><span class="Maybe">     159:</span> <span class="k">/**</span>
<a name="160" /><span class="Maybe">     160:</span> <span class="k"> * timer_pending - is a timer pending?</span>
<a name="161" /><span class="Maybe">     161:</span> <span class="k"> * @timer: the timer in question</span>
<a name="162" /><span class="Maybe">     162:</span> <span class="k"> *</span>
<a name="163" /><span class="Maybe">     163:</span> <span class="k"> * timer_pending will tell whether a given timer is currently pending,</span>
<a name="164" /><span class="Maybe">     164:</span> <span class="k"> * or not. Callers must ensure serialization wrt. other operations done</span>
<a name="165" /><span class="Maybe">     165:</span> <span class="k"> * to this timer, eg. interrupt contexts, or other CPUs on SMP.</span>
<a name="166" /><span class="Maybe">     166:</span> <span class="k"> *</span>
<a name="167" /><span class="Maybe">     167:</span> <span class="k"> * return value: 1 if the timer is pending, 0 if not.</span>
<a name="168" /><span class="Maybe">     168:</span> <span class="k"> */</span>
<a name="169" /><span class="Maybe">     169:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">timer_pending</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span> <span class="b">timer</span><span class="f">)</span>
<a name="170" /><span class="Maybe">     170:</span> <span class="f">{</span>
<a name="171" /><span class="Maybe">     171:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">entry</span><span class="f">.</span><span class="b">next</span> <span class="f">!=</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>
<a name="172" /><span class="Maybe">     172:</span> <span class="f">}</span>
<a name="173" /><span class="Maybe">     173:</span> 
<a name="174" /><span class="Maybe">     174:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">add_timer_on</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">)</span><span class="f">;</span>
<a name="175" /><span class="Maybe">     175:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">del_timer</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span> <span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="176" /><span class="Maybe">     176:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">mod_timer</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">expires</span><span class="f">)</span><span class="f">;</span>
<a name="177" /><span class="Maybe">     177:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">mod_timer_pending</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">expires</span><span class="f">)</span><span class="f">;</span>
<a name="178" /><span class="Maybe">     178:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">mod_timer_pinned</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">expires</span><span class="f">)</span><span class="f">;</span>
<a name="179" /><span class="Maybe">     179:</span> 
<a name="180" /><span class="Maybe">     180:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">set_timer_slack</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">time</span><span class="f">,</span> <span class="m">int</span> <span class="b">slack_hz</span><span class="f">)</span><span class="f">;</span>
<a name="181" /><span class="Maybe">     181:</span> 
<a name="182" /><span class="Maybe">     182:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VElNRVJfTk9UX1BJTk5FRF8w"><span class="b">TIMER_NOT_PINNED</span></a>    <span class="c">0</span>
<a name="183" /><span class="Maybe">     183:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VElNRVJfUElOTkVEXzA_"><span class="b">TIMER_PINNED</span></a>        <span class="c">1</span>
<a name="184" /><span class="Maybe">     184:</span> <span class="k">/*</span>
<a name="185" /><span class="Maybe">     185:</span> <span class="k"> * The jiffies value which is added to now, when there is no timer</span>
<a name="186" /><span class="Maybe">     186:</span> <span class="k"> * in the timer wheel:</span>
<a name="187" /><span class="Maybe">     187:</span> <span class="k"> */</span>
<a name="188" /><span class="Maybe">     188:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_TkVYVF9USU1FUl9NQVhfREVMVEFfMA__"><span class="b">NEXT_TIMER_MAX_DELTA</span></a>    <span class="f">(</span><span class="f">(</span><span class="c">1UL</span> <span class="f">&lt;&lt;</span> <span class="c">30</span><span class="f">)</span> <span class="f">-</span> <span class="c">1</span><span class="f">)</span>
<a name="189" /><span class="Maybe">     189:</span> 
<a name="190" /><span class="Maybe">     190:</span> <span class="k">/*</span>
<a name="191" /><span class="Maybe">     191:</span> <span class="k"> * Return when the next timer-wheel timeout occurs (in absolute jiffies),</span>
<a name="192" /><span class="Maybe">     192:</span> <span class="k"> * locks the timer base and does the comparison against the given</span>
<a name="193" /><span class="Maybe">     193:</span> <span class="k"> * jiffie.</span>
<a name="194" /><span class="Maybe">     194:</span> <span class="k"> */</span>
<a name="195" /><span class="Maybe">     195:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">get_next_timer_interrupt</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">now</span><span class="f">)</span><span class="f">;</span>
<a name="196" /><span class="Maybe">     196:</span> 
<a name="197" /><span class="Maybe">     197:</span> <span class="k">/*</span>
<a name="198" /><span class="Maybe">     198:</span> <span class="k"> * Timer-statistics info:</span>
<a name="199" /><span class="Maybe">     199:</span> <span class="k"> */</span>
<a name="200" /><span class="Maybe">     200:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1RJTUVSX1NUQVRTXzA_"><span class="b">CONFIG_TIMER_STATS</span></a>
<a name="201" /><span class="Maybe">     201:</span> 
<a name="202" /><span class="Maybe">     202:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">timer_stats_active</span><span class="f">;</span>
<a name="203" /><span class="Maybe">     203:</span> 
<a name="204" /><span class="Maybe">     204:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VElNRVJfU1RBVFNfRkxBR19ERUZFUlJBQkxFXzA_"><span class="b">TIMER_STATS_FLAG_DEFERRABLE</span></a>    <span class="c">0x1</span>
<a name="205" /><span class="Maybe">     205:</span> 
<a name="206" /><span class="Maybe">     206:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">init_timer_stats</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="207" /><span class="Maybe">     207:</span> 
<a name="208" /><span class="Maybe">     208:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">timer_stats_update_stats</span><span class="f">(</span><span class="m">void</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">pid_t</span> <span class="b">pid</span><span class="f">,</span> <span class="m">void</span> <span class="f">*</span><span class="b">startf</span><span class="f">,</span>
<a name="209" /><span class="Maybe">     209:</span>                      <span class="m">void</span> <span class="f">*</span><span class="b">timerf</span><span class="f">,</span> <span class="m">char</span> <span class="f">*</span><span class="b">comm</span><span class="f">,</span>
<a name="210" /><span class="Maybe">     210:</span>                      <span class="m">unsigned</span> <span class="m">int</span> <span class="b">timer_flag</span><span class="f">)</span><span class="f">;</span>
<a name="211" /><span class="Maybe">     211:</span> 
<a name="212" /><span class="Maybe">     212:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">__timer_stats_timer_set_start_info</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span>
<a name="213" /><span class="Maybe">     213:</span>                            <span class="m">void</span> <span class="f">*</span><span class="b">addr</span><span class="f">)</span><span class="f">;</span>
<a name="214" /><span class="Maybe">     214:</span> 
<a name="215" /><span class="Maybe">     215:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">timer_stats_timer_set_start_info</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="216" /><span class="Maybe">     216:</span> <span class="f">{</span>
<a name="217" /><span class="Maybe">     217:</span>     <span class="m">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_bGlrZWx5XzA_"><span class="b">likely</span></a><span class="f">(</span><span class="f">!</span><span class="b">timer_stats_active</span><span class="f">)</span><span class="f">)</span>
<a name="218" /><span class="Maybe">     218:</span>         <span class="m">return</span><span class="f">;</span>
<a name="219" /><span class="Maybe">     219:</span>     <span class="b">__timer_stats_timer_set_start_info</span><span class="f">(</span><span class="b">timer</span><span class="f">,</span> <span class="b">__builtin_return_address</span><span class="f">(</span><span class="c">0</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="220" /><span class="Maybe">     220:</span> <span class="f">}</span>
<a name="221" /><span class="Maybe">     221:</span> 
<a name="222" /><span class="Maybe">     222:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">timer_stats_timer_clear_start_info</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="223" /><span class="Maybe">     223:</span> <span class="f">{</span>
<a name="224" /><span class="Maybe">     224:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">start_site</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_TlVMTF8w"><span class="b">NULL</span></a><span class="f">;</span>
<a name="225" /><span class="Maybe">     225:</span> <span class="f">}</span>
<a name="226" /><span class="False">     226:</span> <span class="f">#</span><span class="n">else</span>
<a name="227" /><span class="False">     227:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">init_timer_stats</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="228" /><span class="False">     228:</span> <span class="f">{</span>
<a name="229" /><span class="False">     229:</span> <span class="f">}</span>
<a name="230" /><span class="False">     230:</span> 
<a name="231" /><span class="False">     231:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">timer_stats_timer_set_start_info</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="232" /><span class="False">     232:</span> <span class="f">{</span>
<a name="233" /><span class="False">     233:</span> <span class="f">}</span>
<a name="234" /><span class="False">     234:</span> 
<a name="235" /><span class="False">     235:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">timer_stats_timer_clear_start_info</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="236" /><span class="False">     236:</span> <span class="f">{</span>
<a name="237" /><span class="False">     237:</span> <span class="f">}</span>
<a name="238" /><span class="Maybe">     238:</span> <span class="f">#</span><span class="n">endif</span>
<a name="239" /><span class="Maybe">     239:</span> 
<a name="240" /><span class="Maybe">     240:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">add_timer</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="241" /><span class="Maybe">     241:</span> 
<a name="242" /><span class="Maybe">     242:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">try_to_del_timer_sync</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="243" /><span class="Maybe">     243:</span> 
<a name="244" /><span class="Maybe">     244:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1NNUF8w"><span class="b">CONFIG_SMP</span></a>
<a name="245" /><span class="Maybe">     245:</span>   <span class="m">extern</span> <span class="m">int</span> <span class="b">del_timer_sync</span><span class="f">(</span><span class="m">struct</span> <span class="b">timer_list</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="246" /><span class="False">     246:</span> <span class="f">#</span><span class="n">else</span>
<a name="247" /><span class="False">     247:</span> <span class="f">#</span> <span class="n">define</span> <span class="b">del_timer_sync</span><span class="f">(</span><span class="b">t</span><span class="f">)</span>        <span class="b">del_timer</span><span class="f">(</span><span class="b">t</span><span class="f">)</span>
<a name="248" /><span class="Maybe">     248:</span> <span class="f">#</span><span class="n">endif</span>
<a name="249" /><span class="Maybe">     249:</span> 
<a name="250" /><span class="Maybe">     250:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_ZGVsX3NpbmdsZXNob3RfdGltZXJfc3luY18w"><span class="b">del_singleshot_timer_sync</span></a><span class="f">(</span><span class="b">t</span><span class="f">)</span> <span class="b">del_timer_sync</span><span class="f">(</span><span class="b">t</span><span class="f">)</span>
<a name="251" /><span class="Maybe">     251:</span> 
<a name="252" /><span class="Maybe">     252:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">init_timers</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="253" /><span class="Maybe">     253:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">run_local_timers</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="254" /><span class="Maybe">     254:</span> <span class="m">struct</span> <span class="b">hrtimer</span><span class="f">;</span>
<a name="255" /><span class="Maybe">     255:</span> <span class="m">extern</span> <span class="m">enum</span> <span class="b">hrtimer_restart</span> <span class="b">it_real_fn</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="256" /><span class="Maybe">     256:</span> 
<a name="257" /><span class="Maybe">     257:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">__round_jiffies</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">j</span><span class="f">,</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">)</span><span class="f">;</span>
<a name="258" /><span class="Maybe">     258:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">__round_jiffies_relative</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">j</span><span class="f">,</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">)</span><span class="f">;</span>
<a name="259" /><span class="Maybe">     259:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">round_jiffies</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">j</span><span class="f">)</span><span class="f">;</span>
<a name="260" /><span class="Maybe">     260:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">round_jiffies_relative</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">j</span><span class="f">)</span><span class="f">;</span>
<a name="261" /><span class="Maybe">     261:</span> 
<a name="262" /><span class="Maybe">     262:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">__round_jiffies_up</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">j</span><span class="f">,</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">)</span><span class="f">;</span>
<a name="263" /><span class="Maybe">     263:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">__round_jiffies_up_relative</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">j</span><span class="f">,</span> <span class="m">int</span> <span class="b">cpu</span><span class="f">)</span><span class="f">;</span>
<a name="264" /><span class="Maybe">     264:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">round_jiffies_up</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">j</span><span class="f">)</span><span class="f">;</span>
<a name="265" /><span class="Maybe">     265:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">round_jiffies_up_relative</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="b">j</span><span class="f">)</span><span class="f">;</span>
<a name="266" /><span class="Maybe">     266:</span> 
<a name="267" /><span class="True">     267:</span> <span class="f">#</span><span class="n">endif</span>
<a name="268" /><span class="True">     268:</span> </pre>
  </body>
</html>
